package com.ruoyi.seal.mapper;


import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.seal.domain.Seal;
import com.ruoyi.seal.domain.SealType;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用印Mapper接口
 *
 * @author 钟彧
 * @date 2022-08-08
 */
public interface SealMapper {
    /**
     * 查询用印
     *
     * @param sealId 用印主键
     * @return 用印
     */
    public Seal selectSealBySealIdAndUid(@Param("sealId") String sealId, @Param("userId") Long userId);

    /**
     * 查询用印
     *
     * @param Seal seal
     * @return 用印
     */
    public Seal selectSealBySealIdAndApproveId(Seal seal);


    public List<Seal> selectSealList(Seal seal);

    /**
     * 科室负责人查询用印列表
     *
     * @param seal 用印
     * @return 用印集合
     */
    public List<Seal> selectSealListByDept( Seal seal);

    /**
     * 指定审批人查询用印列表
     *
     * @param seal 用印
     * @return 用印集合
     */
    public List<Seal> selectSealListByMaster(Seal seal);

    /**
     * 科室审批
     *
     * @param seal 用印
     * @return 结果
     */
    public int deptApprovalSeal(Seal seal);

    /**
     * 指定审批人审批
     *
     * @param seal 用印
     * @return 结果
     */
    public int masterApproval(Seal seal);

    /**
     * 新增用印
     *
     * @param seal 用印
     * @return 结果
     */
    public int insertSeal(Seal seal);

    /**
     * 查询用印类型
     *
     * @return 用印类型集合
     */
    public List<SealType> queerSealTypes();

    /**
     * 批量删除用印
     *
     * @param sealIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSealBySealIds(@Param("sealIds") String[] sealIds, @Param("userId") Long userId);

    public String getDeptName(Long deptId);

    public String getUserName(Long userId);

    /**
     * 通过List<String> ids获取List<Seal>
     */
    public List<Seal> getListSealByIds(@Param("ids") List<String> ids);

    /**
     *
     */
    int selectDeptSealCountByUserId(Long userId);

    /**
     *
     */
    int selectMasterSealCountByUserId(Long userId);

    /**
     * 修改用印
     */
    int updateSeal(Seal seal);

    /**
     * 进入审批
     */
    public void intoApprovel(Seal seal);

    /**
     * 完成审批
     */
    public void finshApprovel(Seal seal);

    /**
     * 判断seal是否属于自己
     *
     * @param sealId
     * @param userId
     * @return boolean
     */
    public int isSelfSeal(@Param("sealId") String sealId, @Param("userId") Long userId);

    /**
     * 个人补传附件
     * 只有审核流程通过后才可以
     */
    public int reUpFile(Seal seal);
}
